Lossless image compression for few-colored images

ABSTRACT

Architecture that utilizes characteristics of high spatial redundancy and few colors in few-colored images to compress the image data in a hierarchical manner, and store block level information. The entire image is decomposed into fixed-size blocks, and the block color information (single-colored or multi-colored) is stored. All multi-colored blocks are further divided into smaller blocks (sub-blocks) in a lower level, and the sub-block information is stored as well. The process is performed recursively until there are no more multi-colored blocks, or until the block size reaches a minimum size (e.g., a 1×1 block or one pixel). The information is then entropy coded.

BACKGROUND

Lossless image compression techniques are preferred in imagepre-processing/editing, for archiving in original high quality, inmedical imaging, cartoon images, area maps, etc. Existing lossless imagecompression techniques are not optimized for compressing few-coloredimages (e.g., 1024 or less colors). For example, the GIF (graphicsinterchange format) file format is limited to two-hundred and fifty-sixcolors, but the compression achieved is not optimal. Whereas, the PNG(portable network graphics) file format compresses few-colored imagesbetter than GIF, PNG works on principles best-suited for compressingimages with thousands or millions of colors. Thus, existing losslessimage compression techniques are not optimized for compressingfew-colored images.

SUMMARY

The following presents a simplified summary in order to provide a basicunderstanding of some novel implementations described herein. Thissummary is not an extensive overview, and it is not intended to identifykey/critical elements or to delineate the scope thereof. Its solepurpose is to present some concepts in a simplified form as a prelude tothe more detailed description that is presented later.

The disclosed architecture utilizes characteristics of high spatialredundancy and few colors in a few-colored image to losslessly compressthe image in a hierarchical manner, and store block level information.The entire image is decomposed into fixed-size blocks, and the blockcolor information (single-colored or multi-colored) is stored. Allmulti-colored blocks are further divided into smaller blocks(sub-blocks) in a lower level, and the sub-block information is storedas well. The process is performed recursively until there are no moremulti-colored blocks, or until the block size reaches a minimum size(e.g., a 1×1 block, which is one pixel). The information is then entropycoded (e.g., Huffman encoded).

More generally, the information of each of color block is coded assingle-colored or multi-colored. If single colored, the index of thiscolor is stored; if multi-colored, the index of this multi-colored blockat this level is stored. For each multi-colored block found in theprevious level, break down (decompose) the multi-colored block intosmaller rectangular blocks of size m_(i)×n_(i) (for i^(th) level ofblocks) and repeat the information coding step for each of themulti-colored blocks. Then repeat the information coding step andmulti-color decomposition step until no multi-colored blocks remain tobe coded. The list of colors and the hierarchical block information isthen coded in the least number of bits. The data obtained from codingstep is then entropy encoded (e.g., using Huffman encoding).

More specifically, the disclosed architecture enables block colorinformation coding of the image as single-colored blocks andmulti-colored blocks. The entire image is decomposed into blocks of sizem×n. Each single-colored block is marked (tagged) as a single-coloredblock, and with the associated color information. Multi-colored blocksare marked as multi-colored block, and with block index information.Only the multi-colored blocks are recursively decomposed into sub-blocksusing smaller block sizes.

Single-colored blocks are saved with an index of the color of itspixels, rather than the full color information itself. Multi-coloredblocks of a certain block level are saved with an index of that block inthe sequence of multi-colored blocks at that block level. Multi-coloredblocks of a certain block level are broken down into sub-blocks of sizem×n, where: m may be different from n, or m may be equal to n; m and ncan be chosen to be different at each level, or may be same acrosslevels; and, optimal m and n for different block levels can bedetermined by encoding with different values of m and n, and thenchecking the resulting encoded size.

All block color information of a particular level is saved before thesequence of sub-blocks information (of only the multi-colored blocks ofthis level). This enables the progressive decoding (one block level at atime) and display of the image, which is valuable for progressivelyshowing the image, and especially useful for images sent over thenetworks, such as the Internet.

If the block color information for single-colored blocks andmulti-colored blocks are maintained to be of the same number of bits orbytes, this equality provides an additional benefit of random access toget the color information of any block or pixel. Based on this equality,given the information of m×n chosen at each level and given theinformation of single-colored block and multi-colored block informationsize, find the block offset of the block into which required pixelfalls. If the block is a single-colored block, then the blockinformation provides the color of the pixel as well. If the block is amulti-colored block, jump over the block information of this level, anduse the index of this multi-colored block as relates to allmulti-colored blocks at this level and the m×n sub-block size chosen, tofind the number of sub-blocks to skip. These steps are then repeateduntil only one or more single-colored sub-blocks are reached or aminimum block size is reached.

In such an encoded file, determining the color information of a certainpixel can be achieved as follows: find the block number which containsthe pixel, and check the block information. If the block informationindicates the block is a single-colored block, then the pixel is thecolor of the single-colored block. If the block information indicatesthe block is a multi-colored block, then jump to the offset where thesub-blocks information exists (based on the multi-colored block index ofthis block at this level).

To the accomplishment of the foregoing and related ends, certainillustrative aspects are described herein in connection with thefollowing description and the annexed drawings. These aspects areindicative of the various ways in which the principles disclosed hereincan be practiced and all aspects and equivalents thereof are intended tobe within the scope of the claimed subject matter. Other advantages andnovel features will become apparent from the following detaileddescription when considered in conjunction with the drawings.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 illustrates an image compression processing system in accordancewith the disclosed architecture.

FIG. 2 illustrates a multi-level decomposition hierarchy for few-coloredimage compression processing in accordance with the disclosedarchitecture.

FIG. 3 illustrates exemplary block information coding for few-coloredimage processing in accordance with the disclosed architecture.

FIG. 4 illustrates a method of compression processing an image inaccordance with the disclosed architecture.

FIG. 5 illustrates an alternative method of compression processing animage in accordance with the disclosed architecture.

FIG. 6 illustrates a block diagram of a computing system that executeslossless image compression for few-colored images in accordance with thedisclosed architecture.

DETAILED DESCRIPTION

Utilizing an optimal technique suited for “few-colored” images (e.g.,1024 or fewer colors) can provide an improved compression level comparedto existing techniques. The improvement is most pronounced inhigh-resolution images. Additionally, the improvement in the compressionlevel provides savings in disk space and reduction in bandwidth requiredfor transmission over a network.

Few-colored images have a high degree of spatial redundancy, due to theentire image consisting of only a few colors. The disclosed architectureutilizes this fact to compress the image data in a hierarchical manner,and storing block level information.

In operation, the entire image is decomposed into fixed-size blocks, andthe block color information (single-colored or multi-colored) is stored.All multi-colored blocks are further divided into smaller blocks(sub-blocks) in a lower level, and the sub-block information is storedas well. The process is performed recursively until there are no moremulti-colored blocks, or until the block size reaches a minimum size(i.e., a 1×1 block, which is one pixel). The information can then beentropy coded.

One existing approach divides a block into four quadrants of equal size,which is contrary to the disclosed architecture that uses a block sizeof m×n and which can be a different size at different levels. Usingdifferent block sizes at different levels, where m may not be equal ton, can result in more efficient coding. Moreover, the disclosedarchitecture treats all multi-colored blocks similarly, while thisexisting approach uses a shape palette to indicate the positions ofcolors in a two-colored block. Additionally, the disclosed architecturecompletes the output of one level of block information before moving tothe next level, while an existing approach outputs sub-block informationwhen the block is being processed. In yet another disclosed feature, thedisclosed architecture provides the advantage of progressive decode anddisplay of image. Moreover, if the single-block and multi-blockinformation are of same width (in bits), this enables the additionaladvantage of random access to any pixel information. Still further, thedisclosed architecture has no color limitation.

In yet another comparison to existing deficient systems, a secondexisting approach uses a recursive set partitioning procedure forwavelet coefficients (transformed coefficients), while the disclosedarchitecture employs recursive decomposition to gather the spatialredundancy in the image. This second approach uses a significancethreshold formula to group points into sets, as a step in lossy encodingtechniques involving image transform in frequency, while the disclosedarchitecture is a lossless encoding technique.

The second approach also uses the quad-tree decomposition approach,which breaks down a block into four sub-blocks, which is contrary to thedisclosed architecture which uses block sizes of m×n, and which can bedifferent sizes at different levels. The different sizes at differentlevels and using block sizes of m×n, where m may not be equal to n, canresult in a more efficient coding. This second approach used previouslycoded sub-blocks as context for subsequent sub-blocks, which is contrato the disclosed architecture which does not use any context and codeseach block independently. This is advantageous in being able to decode ablock independently of the other blocks.

A third deficient existing approach divides an image into blocks,entropy encodes these blocks, and in turn, uses these to entropy encodethe image, while the disclosed architecture recursively breaks down ablock into sub-blocks. Thus, the third approach exploits the spatiallysimilar regions of an image to achieve compression, while the disclosedarchitecture utilizes the spatial redundancy in the regions of an imageto achieve compression. This third deficient approach does not guaranteelossless compression, which is contra to the disclosed architecturewhich is a completely lossless technique. Additionally, this thirdapproach encodes the red, blue, green and alpha channels separately,while the disclosed architecture encodes the complete color values anduses the index of color in the coding.

In yet a fourth deficient existing approach, the encoder is a genericblock encoder where the image is broken down and processed as blocks,which is contra to the disclosed architecture that recursively breaksdown the image into blocks of the same color to exploit the spatialredundancy in the image. This fourth approach also uses quantized colorsin the block and is a lossy image encoding technique, which is contra tothe disclosed architecture that uses the original colors in the blockand is a lossless image encoding technique.

The disclosed architecture exhibits the technical effects of savings instorage space (e.g., disk drives, flash drives, etc.), memory space, andreduced transmission bandwidth, since the file is smaller than otherwisewould be used in existing deficient compression techniques.

Reference is now made to the drawings, wherein like reference numeralsare used to refer to like elements throughout. In the followingdescription, for purposes of explanation, numerous specific details areset forth in order to provide a thorough understanding thereof. It maybe evident, however, that the novel implementations can be practicedwithout these specific details. In other instances, well knownstructures and devices are shown in block diagram form in order tofacilitate a description thereof. The intention is to cover allmodifications, equivalents, and alternatives falling within the spiritand scope of the claimed subject matter.

FIG. 1 illustrates an image compression processing system 100 inaccordance with the disclosed architecture. The system 100 can includean image decomposition component 102 configured to decompose an entireimage 104 into a hierarchical arrangement 106 of blocks 108 of equalsize and (a hierarchy of) block levels 110.

Each block level comprises blocks of a single (same) block size. Eachlevel of the block levels 110 can comprise one or more a single-coloredblocks (SCBs), one or more multi-colored blocks (MCBs) or combinationsof single-colored blocks and multi-colored blocks. However, it is to beunderstood that any one or more multi-colored blocks of a given levelwill automatically cause the generation of a new level, and so on, untilonly single-colored blocks exist in a level. Thus, it is possible thatonly one level exists if only single-colored blocks exist on that onelevel.

A block information component 112 is provided and configured to generateand store block information 114 for the blocks 108 (e.g., as a colorlist), and an encoder component 116 is provided and configured toentropy encode the block information 114 into a compressed output 118. Agiven single-colored block of the single-colored blocks of a given levelcan be saved with (as) an index of color(s) of the pixels of the givensingle-colored block. A given multi-colored block of the multi-coloredblocks and of a given block level, can be saved with an index of thegiven multi-colored block at that level (in other words, the sequenceinformation of the given multi-colored block relative to themulti-colored blocks at that level.

The image decomposition component 102 is configured to decompose to anew hierarchy level for a multi-colored block of a given block level.The image decomposition component 102 is configured to decompose theimage until only one or more single-colored blocks exist at a givenblock level. The block color information for both a single-colored blockand a multi-colored block can be maintained as an equal number of bits.The block information comprises block index information of multi-coloredblocks and color information of single-colored blocks.

It is to be understood that in the disclosed architecture, certaincomponents may be reoriented, combined, omitted, and additionalcomponents may be included. For example, all of the components (102, 122and 116) can be client-based. In another example, all of the components(102, 122 and 116) can be cloud-based.

FIG. 2 illustrates a multi-level decomposition hierarchy 200 forfew-colored image compression processing in accordance with thedisclosed architecture. The hierarchy 200 shows three levels (for thisdescription): Level 1, Level 2, and Level 3, where decomposition beginsat Level 1, and does not terminate at Level 1, since there exist atleast multi-colored blocks (MCB1, MCB2, and MCB3). At Level 1, the colorinformation is generated and stored for each of the single-coloredblocks (SCBs) at this level. For the multi-colored blocks, the positionof each multi-colored block in the sequence of multi-colored blocks atLevel 1, is stored.

Decomposition then generates the next level, Level 2, and decomposes themulti-colored blocks for Level 1, at Level 2. In this example; MCB1 ofLevel 1 is decomposed into SCB, MCB1, SCB and SCB, at Level 2; MCB2 ofLevel 1 is decomposed into SCB, SCB, MCB1, and MCB2, at Level 2; and,MCB3 of Level 1 is decomposed into MCB1, MCB2, MCB3 and SCB, at Level 2.At Level 2, the color information is generated and stored for each ofthe single-colored blocks (SCBs), and the position of each multi-coloredblock (MCBx) in the sequence of multi-colored blocks at Level 2, isstored.

Since MCBs exist at Level 2, decomposition continues to a next level,Level 3. At Level 3, the first MCB1 in the sequence decomposes to fourSCBs, the second MCB1 in the sequence decomposes to four SCBs, the firstMCB2 in the sequence decomposes to four SCBs, the second MCB2 in thesequence decomposes to four SCBs, and, the first MCB3 in the sequencedecomposes to four SCBs. At Level 3, the color information is generatedand stored for each of the single-colored blocks (SCBs). Since no MCBsexist at Level 3, the decomposition terminates.

In a more specific description, the disclosed architecture enables blockcolor information coding of the image as single-colored blocks andmulti-colored blocks. The entire image is decomposed into blocks of sizem×n. Each single-colored block is marked (tagged) as a single-coloredblock, and with the associated color information. Multi-colored blocksare marked as multi-colored block, and with block index information.Only the multi-colored blocks are recursively decomposed into sub-blocksusing smaller block sizes.

Single-colored blocks are saved with an index of the color of itspixels, rather than the full color information itself. Multi-coloredblocks of a certain block level are saved with an index of that block inthe sequence of multi-colored blocks at that block level. Multi-coloredblocks of a certain block level are broken down into sub-blocks of sizem×n, where: m may be different from n, or m may be equal to n; m and ncan be chosen to be different at each level, or may be same acrosslevels; and, optimal m and n for different block levels can bedetermined by encoding with different values of m and n, and thenchecking the resulting encoded size.

The block color information of a particular level is saved before thesequence of sub-blocks information (of only the multi-colored blocks ofthis level). This enables the progressive decoding (one block level at atime) and display of the image, which is valuable for progressivelyshowing the image, and especially useful for images sent over thenetworks, such as the Internet.

If the block color information for single-colored blocks andmulti-colored blocks are maintained to be of the same number of bits orbytes, this equality provides an additional benefit of random access toget the color information of any block or pixel. Based on this equality,given the information of m×n chosen at each level and given theinformation of single-colored block and multi-colored block informationsize, find the block offset of the block into which required pixelfalls. If the block is a single-colored block, that is the color of thepixel as well. If the block is a multi-colored block, jump over theblock information of this level, and use the index of this multi-coloredblock as relates to all multi-colored blocks at this level, and the m×nsub-block size chosen to find the number of sub-blocks to skip. Thesesteps are then repeated until only one or more single-colored sub-blocksare reached.

In such an encoded file, determining the color information of a certainpixel can be achieved as follows: find the block number which containsthe pixel, and check the block information. If the block informationindicates the block is a single-colored block, then the pixel is thecolor of the single-colored block. If the block information indicatesthe block is a multi-colored block, then jump to (the offset) where thesub-blocks information exists (based on the multi-colored block index ofthis block).

Following is an example operation of the disclosed architecture on afew-colored image. Using an image of 1536×2048 pixel resolution at thefirst level, the image is decomposed into 16×32 blocks, for example. Theblock information for each colored block is marked as single-colored ormulti-colored. If the block is marked single-colored, then the index ofthis color is stored. If block is marked as multi-colored, then theindex of this multi-colored block at this level is stored. No furtherprocessing is performed on the single-colored blocks. However, furtherdecomposition processing is performed only on the multi-colored blocks.Thus, the multi-colored 16×32 blocks are then coded in a second level as4×4 blocks, for example. Any single-colored blocks in the second levelhave the associated color index stored. However, the multi-colored 4×4blocks are then coded in a third level as 1×1 blocks (one pixel). Codingstops at the third level since all the blocks are now single-coloredblocks.

FIG. 3 illustrates exemplary block information coding 300 forfew-colored image processing in accordance with the disclosedarchitecture. Each set of block information can be stored in twenty-fourbit words, for example: one bit (zero or one) for marking as asingle-colored block or marking as a multi-colored block. The remainingtwenty-three bits can be used for color index information (forsingle-colored blocks), or for index information of multi-coloredblocks. These words can then be entropy coded (e.g., using Huffmanencoding). However, it should be understood that this is one examplebit-word implementation, and that the block information can be stored insmaller bit words such as 8-bit words or 16-bit words, etc. In suchcases, the first bit can again, indicate single-colored or multi-coloredblocks, and the remaining bits are used for color information orsequence information.

In one implementation where block information is encoded as 24-bitwords, the first bit (Bit 1) uses a binary “0” to indicatesingle-colored and binary “1” multi-colored. The example word 302 for asingle-colored block (SCB) is shown, where bits 2-23 are used for colorinformation. The example word 304 for a multi-colored block (MCB) isshown, where bits 2-23 are used for sequence (index) information. Inother example, some bits (e.g., two) of the word can be used to indicatethe level to which the colored blocks belong.

Included herein is a set of flow charts representative of exemplarymethodologies for performing novel aspects of the disclosedarchitecture. While, for purposes of simplicity of explanation, the oneor more methodologies shown herein, for example, in the form of a flowchart or flow diagram, are shown and described as a series of acts, itis to be understood and appreciated that the methodologies are notlimited by the order of acts, as some acts may, in accordance therewith,occur in a different order and/or concurrently with other acts from thatshown and described herein. For example, those skilled in the art willunderstand and appreciate that a methodology could alternatively berepresented as a series of interrelated states or events, such as in astate diagram. Moreover, not all acts illustrated in a methodology maybe required for a novel implementation.

FIG. 4 illustrates a method of compression processing an image inaccordance with the disclosed architecture. At 400, an entire image isdecomposed into blocks of equal size. The blocks are characterized assingle-colored blocks and multi-colored blocks. At 402, blockinformation of the blocks at a given level of decomposition are stored.At 404, the multi-colored blocks of a previous level are decomposed intoblocks of equal size at a new level. At 406, the blocks at given levelsare recursively processed and the block information stored untilprocessing is terminated based on termination criteria. At 408, theblock information of the corresponding block levels are entropy coded.

The method can further comprise selecting the block size based onresolution of the image. The method can further comprise decomposing themulti-colored blocks into sub-blocks for the new level, which is a nexthierarchical level. The method can further comprise recursivelyprocessing the blocks and storing the block information for each leveluntil only single-colored blocks exist at a level.

The method can further comprise generating a new block level based onexistence of a multi-colored block at a current level. The method canfurther comprise storing the block information at each level.

The method can further comprise decoding and displaying the imageprogressively for each act of recursive processing, thus, showing theimage progressively to the user without a jarring effect as eachsubsequent processing step only further refines the image. The methodcan further comprise storing block color information of a given blocklevel before a sequence of sub-block information of multi-colored blocksof the given block level.

FIG. 5 illustrates an alternative method of compression processing animage in accordance with the disclosed architecture. At 500, an entireimage is decomposed into fixed-sized blocks and a hierarchy ofsingle-colored blocks and multi-colored blocks. At 502, colorinformation of the single-colored blocks is stored and index informationof the multi-colored blocks at a given level is stored as hierarchicalblock level information. At 504, the multi-colored blocks arerecursively processing into smaller sub-blocks and, the indexinformation and associated hierarchical block level information of themulti-colored blocks are stored at the given levels, until processingterminates based on a block level of only single-colored blocks At 506,the color list and hierarchy block level information of all block levelsare entropy coded.

The method can further comprise processing the image into fixed-sizedblocks of single-colored blocks and multi-colored blocks at differentlevels. The method can further comprise storing block information of agiven block level before a sequence of sub-block information of thegiven level block.

The method can further comprise, in a given block level of severalmulti-color blocks, storing block information of a given multi-colorblock as an index of the given multi-color block in a sequence of theseveral multi-color blocks at the block level. The method can furthercomprise storing the color list and all block information of thehierarchy in a least number of bits.

As used in this application, the term “component” is intended to referto a computer-related entity, either hardware, a combination of softwareand tangible hardware, software, or software in execution. For example,a component can be, but is not limited to, tangible components such asone or more microprocessors, chip memory, mass storage devices (e.g.,optical drives, solid state drives, magnetic storage media drives,etc.), computers, and portable computing and computing-capable devices(e.g., cell phones, tablets, smart phones, etc.). Software componentsinclude processes running on a microprocessor, an object (a softwareentity that maintains state in variables and behavior using methods), anexecutable, a data structure (stored in a volatile or a non-volatilestorage medium), a module (a part of a program), a thread of execution(the smallest sequence of instructions that can be managedindependently), and/or a program.

By way of illustration, both an application running on a server and theserver can be a component. One or more components can reside within aprocess and/or thread of execution, and a component can be localized onone computer and/or distributed between two or more computers. The word“exemplary” may be used herein to mean serving as an example, instance,or illustration. Any aspect or design described herein as “exemplary” isnot necessarily to be construed as preferred or advantageous over otheraspects or designs.

Referring now to FIG. 6, there is illustrated a block diagram of acomputing system 600 that executes lossless image compression forfew-colored images in accordance with the disclosed architecture.Alternatively, or in addition, the functionally described herein can beperformed, at least in part, by one or more hardware logic components.For example, and without limitation, illustrative types of hardwarelogic components that can be used include Field-Programmable Gate Arrays(FPGAs), Application-Specific Integrated Circuits (ASICs),Application-Specific Standard Products (ASSPs), System-on-a-Chip systems(SOCs), Complex Programmable Logic Devices (CPLDs), etc., where analog,digital, and/or mixed signals and other functionality can be implementedin a substrate.

In order to provide additional context for various aspects thereof, FIG.6 and the following description are intended to provide a brief, generaldescription of the suitable computing system 600 in which the variousaspects can be implemented. While the description above is in thegeneral context of computer-executable instructions that can run on oneor more computers, those skilled in the art will recognize that a novelimplementation also can be realized in combination with other programmodules and/or as a combination of hardware and software.

The computing system 600 for implementing various aspects includes thecomputer 602 having microprocessing unit(s) 604 (also referred to asmicroprocessor(s) and processor(s)), a computer-readable storage medium(where the medium is any physical device or material on which data canbe electronically and/or optically stored and retrieved) such as asystem memory 606 (computer readable storage medium/media also includemagnetic disks, optical disks, solid state drives, external memorysystems, and flash memory drives), and a system bus 608. Themicroprocessing unit(s) 604 can be any of various commercially availablemicroprocessors such as single-processor, multi-processor, single-coreunits and multi-core units of processing and/or storage circuits.Moreover, those skilled in the art will appreciate that the novel systemand methods can be practiced with other computer system configurations,including minicomputers, mainframe computers, as well as personalcomputers (e.g., desktop, laptop, tablet PC, etc.), hand-held computingdevices, microprocessor-based or programmable consumer electronics, andthe like, each of which can be operatively coupled to one or moreassociated devices.

The computer 602 can be one of several computers employed in adatacenter and/or computing resources (hardware and/or software) insupport of cloud computing services for portable and/or mobile computingsystems such as wireless communications devices, cellular telephones,and other mobile-capable devices. Cloud computing services, include, butare not limited to, infrastructure as a service, platform as a service,software as a service, storage as a service, desktop as a service, dataas a service, security as a service, and APIs (application programinterfaces) as a service, for example.

The system memory 606 can include computer-readable storage (physicalstorage) medium such as a volatile (VOL) memory 610 (e.g., random accessmemory (RAM)) and a non-volatile memory (NON-VOL) 612 (e.g., ROM, EPROM,EEPROM, etc.). A basic input/output system (BIOS) can be stored in thenon-volatile memory 612, and includes the basic routines that facilitatethe communication of data and signals between components within thecomputer 602, such as during startup. The volatile memory 610 can alsoinclude a high-speed RAM such as static RAM for caching data.

The system bus 608 provides an interface for system componentsincluding, but not limited to, the system memory 606 to themicroprocessing unit(s) 604. The system bus 608 can be any of severaltypes of bus structure that can further interconnect to a memory bus(with or without a memory controller), and a peripheral bus (e.g., PCI,PCIe, AGP, LPC, etc.), using any of a variety of commercially availablebus architectures.

The computer 602 further includes machine readable storage subsystem(s)614 and storage interface(s) 616 for interfacing the storagesubsystem(s) 614 to the system bus 608 and other desired computercomponents and circuits. The storage subsystem(s) 614 (physical storagemedia) can include one or more of a hard disk drive (HDD), a magneticfloppy disk drive (FDD), solid state drive (SSD), flash drives, and/oroptical disk storage drive (e.g., a CD-ROM drive DVD drive), forexample. The storage interface(s) 616 can include interface technologiessuch as EIDE, ATA, SATA, and IEEE 1394, for example.

One or more programs and data can be stored in the memory subsystem 606,a machine readable and removable memory subsystem 618 (e.g., flash driveform factor technology), and/or the storage subsystem(s) 614 (e.g.,optical, magnetic, solid state), including an operating system 620, oneor more application programs 622, other program modules 624, and programdata 626.

The operating system 620, one or more application programs 622, otherprogram modules 624, and/or program data 626 can include items andcomponents of the system 100 of FIG. 1, multi-level decompositionhierarchy 200 of FIG. 2, the block information as shown in FIG. 3, andthe methods represented by the flowcharts of FIGS. 4 and 5, for example.

Generally, programs include routines, methods, data structures, othersoftware components, etc., that perform particular tasks, functions, orimplement particular abstract data types. All or portions of theoperating system 620, applications 622, modules 624, and/or data 626 canalso be cached in memory such as the volatile memory 610 and/ornon-volatile memory, for example. It is to be appreciated that thedisclosed architecture can be implemented with various commerciallyavailable operating systems or combinations of operating systems (e.g.,as virtual machines).

The storage subsystem(s) 614 and memory subsystems (606 and 618) serveas computer readable media for volatile and non-volatile storage ofdata, data structures, computer-executable instructions, and so on. Suchinstructions, when executed by a computer or other machine, can causethe computer or other machine to perform one or more acts of a method.Computer-executable instructions comprise, for example, instructions anddata which cause a general purpose computer, special purpose computer,or special purpose microprocessor device(s) to perform a certainfunction or group of functions. The computer executable instructions maybe, for example, binaries, intermediate format instructions such asassembly language, or even source code. The instructions to perform theacts can be stored on one medium, or could be stored across multiplemedia, so that the instructions appear collectively on the one or morecomputer-readable storage medium/media, regardless of whether all of theinstructions are on the same media.

Computer readable storage media (medium) exclude (excludes) propagatedsignals per se, can be accessed by the computer 602, and includevolatile and non-volatile internal and/or external media that isremovable and/or non-removable. For the computer 602, the various typesof storage media accommodate the storage of data in any suitable digitalformat. It should be appreciated by those skilled in the art that othertypes of computer readable medium can be employed such as zip drives,solid state drives, magnetic tape, flash memory cards, flash drives,cartridges, and the like, for storing computer executable instructionsfor performing the novel methods (acts) of the disclosed architecture.

A user can interact with the computer 602, programs, and data usingexternal user input devices 628 such as a keyboard and a mouse, as wellas by voice commands facilitated by speech recognition. Other externaluser input devices 628 can include a microphone, an IR (infrared) remotecontrol, a joystick, a game pad, camera recognition systems, a styluspen, touch screen, gesture systems (e.g., eye movement, body poses suchas relate to hand(s), finger(s), arm(s), head, etc.), and the like. Theuser can interact with the computer 602, programs, and data usingonboard user input devices 630 such a touchpad, microphone, keyboard,etc., where the computer 602 is a portable computer, for example.

These and other input devices are connected to the microprocessingunit(s) 604 through input/output (I/O) device interface(s) 632 via thesystem bus 608, but can be connected by other interfaces such as aparallel port, IEEE 1394 serial port, a game port, a USB port, an IRinterface, short-range wireless (e.g., Bluetooth) and other personalarea network (PAN) technologies, etc. The I/O device interface(s) 632also facilitate the use of output peripherals 634 such as printers,audio devices, camera devices, and so on, such as a sound card and/oronboard audio processing capability.

One or more graphics interface(s) 636 (also commonly referred to as agraphics processing unit (GPU)) provide graphics and video signalsbetween the computer 602 and external display(s) 638 (e.g., LCD, plasma)and/or onboard displays 640 (e.g., for portable computer). The graphicsinterface(s) 636 can also be manufactured as part of the computer systemboard.

The computer 602 can operate in a networked environment (e.g., IP-based)using logical connections via a wired/wireless communications subsystem642 to one or more networks and/or other computers. The other computerscan include workstations, servers, routers, personal computers,microprocessor-based entertainment appliances, peer devices or othercommon network nodes, and typically include many or all of the elementsdescribed relative to the computer 602. The logical connections caninclude wired/wireless connectivity to a local area network (LAN), awide area network (WAN), hotspot, and so on. LAN and WAN networkingenvironments are commonplace in offices and companies and facilitateenterprise-wide computer networks, such as intranets, all of which mayconnect to a global communications network such as the Internet.

When used in a networking environment the computer 602 connects to thenetwork via a wired/wireless communication subsystem 642 (e.g., anetwork interface adapter, onboard transceiver subsystem, etc.) tocommunicate with wired/wireless networks, wired/wireless printers,wired/wireless input devices 644, and so on. The computer 602 caninclude a modem or other means for establishing communications over thenetwork. In a networked environment, programs and data relative to thecomputer 602 can be stored in the remote memory/storage device, as isassociated with a distributed system. It will be appreciated that thenetwork connections shown are exemplary and other means of establishinga communications link between the computers can be used.

The computer 602 is operable to communicate with wired/wireless devicesor entities using the radio technologies such as the IEEE 802.xx familyof standards, such as wireless devices operatively disposed in wirelesscommunication (e.g., IEEE 802.11 over-the-air modulation techniques)with, for example, a printer, scanner, desktop and/or portable computer,personal digital assistant (PDA), communications satellite, any piece ofequipment or location associated with a wirelessly detectable tag (e.g.,a kiosk, news stand, restroom), and telephone. This includes at leastWi-Fi™ (used to certify the interoperability of wireless computernetworking devices) for hotspots, WiMax, and Bluetooth™ wirelesstechnologies. Thus, the communications can be a predefined structure aswith a conventional network or simply an ad hoc communication between atleast two devices. Wi-Fi networks use radio technologies called IEEE802.11x (a, b, g, etc.) to provide secure, reliable, fast wirelessconnectivity. A Wi-Fi network can be used to connect computers to eachother, to the Internet, and to wire networks (which use IEEE802.3-related technology and functions).

The disclosed architecture can be implemented as an image compressionprocessing system, comprising: means for decomposing an entire imageinto blocks of equal size, the blocks characterized as single-coloredblocks and multi-colored blocks; means for storing block information ofthe blocks at a given level of decomposition; means for decomposingmulti-colored blocks of a previous level into blocks of equal size at anew level; means for recursively processing the blocks at given levelsand storing the block information until processing is terminated basedon termination criteria; and, means for entropy coding the blockinformation of the corresponding block levels.

The disclosed architecture can be implemented as an alternative imagecompression processing system, comprising: means for decomposing anentire image into fixed-sized blocks and a hierarchy of single-coloredblocks and multi-colored blocks; means for storing color information ofthe single-colored blocks and storing index information of themulti-colored blocks at a given level as hierarchical block levelinformation; means for recursively processing the multi-colored blocksinto smaller sub-blocks and storing the index information and associatedhierarchical block level information of the multi-colored blocks at thegiven levels, until processing terminates based on a block level of onlysingle-colored blocks; and, means for entropy coding the color list andhierarchy block level information of all block levels.

What has been described above includes examples of the disclosedarchitecture. It is, of course, not possible to describe everyconceivable combination of components and/or methodologies, but one ofordinary skill in the art may recognize that many further combinationsand permutations are possible. Accordingly, the novel architecture isintended to embrace all such alterations, modifications and variationsthat fall within the spirit and scope of the appended claims.Furthermore, to the extent that the term “includes” is used in eitherthe detailed description or the claims, such term is intended to beinclusive in a manner similar to the term “comprising” as “comprising”is interpreted when employed as a transitional word in a claim.

What is claimed is:
 1. A processor, and a memory device configured withinstructions that when executed by the processor, cause the processor toenable an image compression processing system, the system comprising: animage decomposition component configured to decompose an entire imageinto blocks of equal size and a hierarchy of block levels, each blocklevel comprising blocks of a single block size, the block levelscomprising at least one of single-colored blocks or multi-coloredblocks; a block information component configured to generate and storeblock information for the blocks; and an encoder component configured toentropy encode the block information into a compressed output.
 2. Thesystem of claim 1, wherein a given single-colored block of thesingle-colored blocks is saved with an index of color of pixels of thegiven single-colored block.
 3. The system of claim 1, wherein a givenmulti-colored block of the multi-colored blocks, of a block level, issaved with an index of the given multi-colored block at that blocklevel.
 4. The system of claim 1, wherein the image decompositioncomponent is configured to decompose to a new hierarchy level for amulti-colored block of a given block level.
 5. The system of claim 1,wherein block color information for both a single-colored block and amulti-colored block is maintained as an equal number of bits.
 6. Thesystem of claim 1, wherein the image decomposition component isconfigured to decompose the image until only one or more single-coloredblocks exist at a given block level.
 7. The system of claim 1, whereinthe block information comprises block index information of multi-coloredblocks and color information of single-colored blocks.
 8. Acomputer-implemented method of compression processing an image,comprising computer-executable instructions that when executed by ahardware processor cause the hardware processor to perform acts of:decomposing an entire image into blocks of equal size, the blockscharacterized as single-colored blocks and multi-colored blocks; storingblock information of the blocks at a given level of decomposition;decomposing multi-colored blocks of a previous level into blocks ofequal size at a new level; recursively processing the blocks at givenlevels and storing the block information until processing is terminatedbased on termination criteria; and entropy coding the block informationof the corresponding block levels.
 9. The method of claim 8, furthercomprising selecting the block size based on resolution of the image.10. The method of claim 8, further comprising decomposing themulti-colored blocks into sub-blocks for the new level, which is a nexthierarchical level.
 11. The method of claim 8, further comprisingrecursively processing the blocks and storing the block information foreach level until only single-colored blocks exist at a level.
 12. Themethod of claim 8, further comprising generating a new block level basedon existence of a multi-colored block at a current level.
 13. The methodof claim 8, further comprising storing the block information at eachlevel.
 14. The method of claim 8, further comprising decoding anddisplaying the image progressively for each act of recursive processing.15. The method of claim 8, further comprising storing block colorinformation of a given block level before a sequence of sub-blockinformation of multi-colored blocks of the given block level.
 16. Acomputer-implemented method of compression processing an image,comprising computer-executable instructions that when executed by ahardware processor cause the hardware processor to perform acts of:decomposing an entire image into fixed-sized blocks and a hierarchy ofsingle-colored blocks and multi-colored blocks; storing colorinformation of the single-colored blocks and storing index informationof the multi-colored blocks at a given level as hierarchical block levelinformation; recursively processing the multi-colored blocks intosmaller sub-blocks and storing the index information and associatedhierarchical block level information of the multi-colored blocks at thegiven levels, until processing terminates based on a block level of onlysingle-colored blocks; and entropy coding the color list and hierarchyblock level information of all block levels.
 17. The method of claim 16,further comprising processing the image into fixed-sized blocks ofsingle-colored blocks and multi-colored blocks at different levels. 18.The method of claim 16, further comprising storing block information ofa given block level before a sequence of sub-block information of thegiven level block.
 19. The method of claim 16, further comprising, in agiven block level of several multi-color blocks, storing blockinformation of a given multi-color block as an index of the givenmulti-color block in a sequence of the several multi-color blocks at theblock level.
 20. The method of claim 16, further comprising storing thecolor list and all block information of the hierarchy in a least numberof bits.